<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>

    // 加法函数
    const fn = (x,y) => {
      return x + y
    }

    // 简写写法1
    const fn1 = (x,y) => x + y

    // 简写写法2
    const fn2 = x => {
      console.log(x)
      return x + 10
    }

    // 和普通函数差别：没有arguments
    // const fn3 = function(a,b){
    //   console.log(arguments)  // ['0':10,'1':'30']
    // }
    // const fn3 = (a,b) => {
    //   console.log(arguments) // arguments is not defined
    // }
    // const result = fn3(10,30)

    const obj = {
      age: 17,
      say () {
        // 此时的this是obj本身
        console.log(this.age)
      },
      say2: () => {
        console.log(this)
        // 此时的this是window,是当前函数作用域外部的作用域
        console.log(this.age)
      },
      say3 () {
        // sya3属于obj的一个普通函数，此时的this就是obj本身
        // this === obj
        // setTimeout(function(){
        //   // this === window
        //   // 这个位置是一个匿名函数，一般this执行的是window
        //   console.log(this.age)
        // },1000)
        setTimeout(()=>{
          // 没有this,使用的是外层作用域的this
          // this === obj
          console.log(this.age)
        },1000)
      }
    }

    obj.say() // 17
    obj.say2() // undefined
    obj.say3() // 17
  </script>
</body>
</html>